from kubernetes import client, config

def getPods(namespace=None):
    # 加载 kubeconfig 文件，如果没有指定，则使用默认的 kubeconfig 文件
    config.load_kube_config()

    # 创建 CoreV1Api 的实例，用于与集群通信
    v1 = client.CoreV1Api()

    if namespace == 'all':
        # 获取所有命名空间的 Pod 列表
        pod_list = v1.list_pod_for_all_namespaces(watch=False)
    elif namespace:
        # 获取指定命名空间的 Pod 列表
        pod_list = v1.list_namespaced_pod(namespace)
    else:
        # 默认情况下，获取 'default' 命名空间的 Pod 列表
        pod_list = v1.list_namespaced_pod('default')

    # 提取必要信息并组织成字典列表
    necessary_info = []
    for pod in pod_list.items:
        for container in pod.status.container_statuses:
            print()
        pod_info = {
            'namespace': pod.metadata.namespace,
            'name': pod.metadata.name,
            'ip': pod.status.pod_ip,
            'status': pod.status.phase,
            'containers': [{
                'name': container.name,
                'image': container.image,
                'status': container.state
            } for container in pod.status.container_statuses],
            'labels': pod.metadata.labels,
            'annotations': pod.metadata.annotations,
            'create_time': pod.metadata.creation_timestamp.strftime('%Y-%m-%d %H:%M:%S'),
            'update_time': pod.metadata.creation_timestamp.strftime('%Y-%m-%d %H:%M:%S')
        }
        necessary_info.append(pod_info)

    # 返回获取到的 Pod 列表
    return necessary_info
info = getPods()
for item in info:
    for k,v in item:
        print(k,':\t',v)